const account = {
  prefix: "/user",
  /**
   * 登录，获取用户会话
   * @param {string} username 用户名
   * @param {string} password 密码
   * @returns {import("axios").AxiosRequestConfig}
   */
  login(username, password) {
    return {
      url: `${this.prefix}/session`,
      params: {
        username,
        password,
      },
    };
  },

  /**
   * 注册,添加用户
   * @param {user} user
   */
  register(user) {
    return {
      method: "post",
      url: `${this.prefix}`,
      data: user,
    };
  },

  /**
   * 获取用户信息
   * @param username 用户名,留空时获取已登录用户信息,默认为空
   * @returns 用户类User的对象
   */
  getUserInfo(username = null) {
    return {
      url: `${this.prefix}/info${username ? "/" + username : ""}`,
    };
  },

  /**
   * 根据用户id获取用户名
   * @param aid 用户id
   * @returns 用户名
   */
  getUsernameById(aid) {
    let params = {
      aid: aid,
    };
    return {
      url: `${this.prefix}/username`,
      params: params,
    };
  },

  /**
   * 退出登录
   */
  logout() {
    return {
      method: "delete",
      url: `${this.prefix}/session`,
    };
  },

  /**
   * 上传头像
   * @param {File} file 头像文件
   */
  uploadAvatar(file) {
    const fd = new FormData();
    fd.append("file", file);
    return {
      method: "post",
      url: `${this.prefix}/avatar`,
      data: fd,
      headers: {
        "Content-Type": "multipart/form-data;charset=UTF-8",
      },
    };
  },
  /**
   * 获取用户头像
   * @param {string=} username 用户名,留空时使用已登录用户头像
   * @returns {import("axios").AxiosRequestConfig}
   */
  getAvatar(username) {
    return {
      url: `${this.prefix}/avatar${username ? "/" + username : ""}`,
    };
  },
  /**
   * 修改用户信息
   * @param {user} user 用户对象
   * @returns {import("axios").AxiosRequestConfig}
   */
  modifyUserInfo(user) {
    return {
      method: "put",
      url: `${this.prefix}`,
      data: user,
    };
  },

  modifyUserPassword(user) {
    return {
      method: "post",
      url: `${this.prefix}/password`,
      data: user,
    };
  },
};

export default account;
